Webhooks in
This is the inbound half of the bridge: anything on the network that can send an HTTP request — Home
Assistant, Node-RED, IFTTT, a doorbell, a curl one-liner — can set a control's state or fire a
Crestron Home event, and therefore a scene.
What a webhook can do
A single HTTP request (GET or POST) to the driver can:
| Do this | With |
|---|---|
| Set a control's state | ?element=3&state=on |
| Set a state without firing events | ?element=3&display=on |
| Toggle a control | ?element=3&toggle=1 |
| Press a control | ?element=3&press=1 |
| Fire a Crestron Home event — no control involved | ?event=doorbell |
| Set a template variable | ?var=outsideTemp&value=21 |
The fire-an-event form is the headline capability: any HTTP client can now trigger Crestron Home.
Every fired event arrives as a single programming event — "Webhook received" — carrying the name you
sent (doorbell, arrived_home, …) as its payload. A rule bound to Webhook received, acting when the
name matches, runs your scene. The name is yours to choose and does not need setting up in the driver
first. A doorbell that can send one fixed GET becomes a Crestron Home trigger. See
Events and actions in programming.
The setup app hands you working URLs
You do not assemble these by hand. On the Webhooks tab the setup app shows:
- the base URL with the token already in it;
- a copy-ready example per control — set state, toggle;
- worked examples for firing an event and setting a variable.
Copy one, paste it into Home Assistant (or whatever is sending), and it works.
The token
Every webhook is authorised by a secret token carried in its URL. It is minted the first time the driver runs and stays the same across reboots, so the URLs you hand out keep working.
The Regenerate button mints a new token and immediately invalidates every webhook URL you have handed out — which is exactly what you want if one leaked, and a footgun if you press it by accident. After regenerating, re-copy and re-distribute the URLs.
The token is in the URL, so treat a webhook URL as a secret. Do not put it in anything public.
Example: a Home Assistant automation
To have a Home Assistant automation set control 3 to "on", give it a REST command pointing at the control's Set state URL from the Webhooks tab — it looks like:
http://<processor-ip>/cws/<room>_CHUIDYNAMIC/hook?token=<token>&element=3&state=on
To fire a Crestron Home scene, point it at the fire event URL instead, with whatever event name you want to send:
http://<processor-ip>/cws/<room>_CHUIDYNAMIC/hook?token=<token>&event=arrived_home
Then, in Crestron Home programming, bind a rule to the "Webhook received" event and act when its
name is arrived_home. There is no per-name event to create — one event carries every webhook's name.
Did it arrive?
Every inbound webhook is recorded in the Activity tab, in or out, with its outcome — so you can see that a request arrived and what it did, without a processor console. A webhook that changed nothing shows there too, with the reason.
Like every action in the driver, a webhook only takes effect when the driver is licensed. An unlicensed driver still answers the request, but does nothing with it.